
#ifndef ROPUFU_MULTI_SENSOR_INFORMATION_AFFECTED_RANGE_HPP_INCLUDED
#define ROPUFU_MULTI_SENSOR_INFORMATION_AFFECTED_RANGE_HPP_INCLUDED

#include "information_none.hpp"
#include "information_exact.hpp"
#include "information_at_most.hpp"

#include <cstddef>

namespace ropufu
{
    namespace information
    {
        template <typename t_information_type>
        struct affected_range
        {
        };

        template <std::size_t t_count_streams>
        struct affected_range<information_none<t_count_streams>>
        {
            static const std::size_t value_from = 1;
            static const std::size_t value_to = t_count_streams;
        };

        template <std::size_t t_count_streams, std::size_t t_count_affected>
        struct affected_range<information_at_most<t_count_streams, t_count_affected>>
        {
            static const std::size_t value_from = 1;
            static const std::size_t value_to = t_count_affected;
        };

        template <std::size_t t_count_streams, std::size_t t_count_affected>
        struct affected_range<information_exact<t_count_streams, t_count_affected>>
        {
            static const std::size_t value_from = t_count_affected;
            static const std::size_t value_to = t_count_affected;
        };
    }
}

#endif // ROPUFU_MULTI_SENSOR_INFORMATION_AFFECTED_RANGE_HPP_INCLUDED
